package cn.tedu.elasticsearch.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;
import org.springframework.data.elasticsearch.annotations.FieldType;

import java.io.Serializable;

@Data
@Accessors(chain = true) //开启链式set赋值的功能
@AllArgsConstructor //全参构造
@NoArgsConstructor //无参构造
//@Document是SpringDataES标记实体类的注解
//indexName是执行关联的索引名称，运行时如果item不存在，SpringData会自动创建
@Document(indexName = "item")
public class Item implements Serializable {
    //SpringData标记当前属性为ES的注解
    @Id
    private Long id;
    @Field(type = FieldType.Text,
           analyzer = "ik_max_word",
           searchAnalyzer = "ik_max_word"
    )
    private String title; //商品名称
    //Keyword类型是不需要分词的字符串类型
    @Field(type = FieldType.Keyword)
    private String category; //商品的分类
    @Field(type = FieldType.Keyword)
    private String brand; //商品的品牌
    @Field(type = FieldType.Double)
    private Double price; //价格
    //图片的地址不会成为搜索条件，所以不生成索引
    //不生成索引可以节省空间，把index设置成false即可
    @Field(type = FieldType.Keyword,index = false)
    private String imgPath; //图片的位置
}
